public class ActionEvent<TActionEventType> {
	public delegate void EventUpdateHandler (ActionEvent<TActionEventType> actionEvent);
	public event EventUpdateHandler Update;

	public TActionEventType type;
	public string id = null;
	
	//Time in UTC.
	public long timestamp = -1;
	
	//0-1. Indicates whether the event marks the start of an action, a tween position, or the end of an action.
	//0 indicates a start, 1 an end, and any other value reflects a tween position.
	public float actionProgress = 0;
	
	//If true, failures in action init methods will throw errors.
	public bool initThrowErrors = true;
	//If true, the test method of each event action will be run before execution.
	public bool test = true;
	//If true, failures in action test methods will throw errors.
	public bool testThrowErrors = true;
	//If true, the execute method of each event action will be run.
	public bool execute = true;
	//If true, failures in action execute method will throw errors.
	public bool executeThrowErrors = true;
	//If true, failures in action finish method will throw errors.
	public bool finishThrowErrors = true;

	//The following vars are used to track the progress of an event.
	public bool initialized = false;
	public bool tested = false;
	public bool executionStarted = false;
	public bool executed = false;
	public bool finished = false;

	//Success is only set to true if an event is completed entirely with zero errors.
	public bool success = false;
}
